package com.peas.platform.module.icims.budget.project.controller.vo;

import java.math.*;
import com.peas.platform.common.core.vo.BaseVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.*;

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel("一级项目申报")
public class BudgetProjectOneVo extends BaseVo {

    // （项目分类表）外键
    @ApiModelProperty(value = "项目分类ID", notes = "")
    private Long catalogId;

    // （组织架构表）外键
    @ApiModelProperty(value = "编报部门ID", notes = "")
    private Long departmentId;

    @ApiModelProperty(value = "一级项目编号", notes = "")
    @Size(max = 50, message = "一级项目编号不能超过50个字符")
    private String code;

    @ApiModelProperty(value = "一级项目名称", notes = "")
    @Size(max = 100, message = "一级项目名称不能超过100个字符")
    private String name;

    // （一级项目表）外键
    @ApiModelProperty(value = "上级一级项目ID", notes = "")
    private Long parentId;

    @ApiModelProperty(value = "资金主管科室", notes = "")
    private Long managerOrgId;

    @ApiModelProperty(value = "存续状态", notes = "")
    @Size(max = 20, message = "存续状态不能超过20个字符")
    private String viability;

    @ApiModelProperty(value = "预算级次", notes = "")
    @Size(max = 20, message = "预算级次不能超过20个字符")
    private String level;

    // （用户表）外键
    @ApiModelProperty(value = "项目负责人用户ID", notes = "")
    private Long principalUserId;

    @ApiModelProperty(value = "金额", notes = "")
    private BigDecimal amount;

    @ApiModelProperty(value = "本年度申报金额", notes = "")
    private BigDecimal currentAmount;

    @ApiModelProperty(value = "项目库状态", notes = "")
    @Size(max = 20, message = "项目库状态不能超过20个字符")
    private String state;

    @ApiModelProperty(value = "计划开始年度", notes = "")
    @Size(max = 4, message = "计划开始年度不能超过4个字符")
    private String planStart;

    @ApiModelProperty(value = "计划截止年度", notes = "")
    @Size(max = 4, message = "计划截止年度不能超过4个字符")
    private String planEnd;

    // （附件表）外键
    @ApiModelProperty(value = "附件ID", notes = "")
    private Long attachmentId;

}
